JavaScriptで簡単IoT作り!sakura.io「IchigoSoda」で送信 “iotw(1)” 受信 “iotr()” のお手軽実装!

IMG_3011.jpg

さくらインターネット提供、IoT版 IchigoJamボード「IchigoSoda」をGET。今回は JavaScript OS 「IchigoLatte」を焼いて使ってみます。写真のようにシリアル線をつないだら、

Screen Shot 2018-10-03 at 13.39.54.png

IchigoLatte ファームウェアを以下のようにして焼きます。

$ lpc21isp -control ichigolatte.jp.hex /dev/tty.usbserial 115200 1200

IMG_3012

次は sakura.io モジュールを取り付け。LTE対応のアンテナ付きSIM基板です。モジュールは事前に登録設定しておいてください。

IMG_3014.jpg

電源を入れれば IchigoLatte のシェル「lash」が立ち上がります。では

lash> vi .

でテキストエディタに入り、sakura.io モジュール のドライバを打ち込みます。

function iotr(){
  i2cw(0x4f,0x30,0x00,0x30);

  var s,l,c,t;
  var v0,v1,v2,v3,v4,v5,v6,v7;
  var o0,o1,o2,o3,o4,o5,o6,o7;
  i2cr(0x4f,s,l,c,t,v0,v1,v2,v3,v4,v5,v6,v7,o0,o1,o2,o3,o4,o5,o6,o7);

  var r=(v0<< 0)+(v1<< 8)+(v2<<16)+(v3<<24);
  return (s==1)*r;
}

function iotw(n){
  var n0=(n>> 0)&0xff;
  var n1=(n>> 8)&0xff;
  var n2=(n>>16)&0xff;
  var n3=(n>>24)&0xff;

  i2cw(0x4f,0x21,0x0a,0x00,0x69,n0,n1,n2,n3,0,0,0,0,n0^n1^n2^n3^0x42);

  var r;
  i2cr(0x4f,r);
  return r;
}

このドライバ部分の内容が気になる方はこちら

while(1){
  if( btn() ){
    iotw(1);
    sleep(500);
  }

  if( iotr() ){
    led(1);
    sleep(500);
    led(0);
  }
}

今回はこのようなプログラムにしました。ボード上のボタンが押されたらLTE回線経由で 1 を送ります。また、LTE回線経由でデータが到着したらボード上のLEDを光らせます。

Screen Shot 2018-10-03 at 13.14.22.png

では sakura.io の管理画面から連携サービス WebSocket を作成し、URLをゲットします。

Screen Shot 2018-10-03 at 13.15.30.png

今回は websocket.org の Test アプリを拝借。

Screen Shot 2018-10-03 at 13.16.39.png

「Location:」にゲットしたURL「wss://api.sakura.io/ws/v1/xxxxx….x」を貼り付けて「Connect」をクリック。「Log:」に CONNECTED が表示されればOK。

Screen Shot 2018-10-03 at 13.16.53.png

ほっておいても何秒かごとに keepalive が到着するようです。

さて、準備は完了。

lash> ms .

と打ってプログラムを実行。

IMG_3019.jpg

ボード上のボタンを押します。

Screen Shot 2018-10-03 at 13.20.49.png

すると「value:1」が到着、いいですねー。

{
  "type":"channels",
  "module":"xxxxxx...x",
  "payload":{
    "channels":[
      {
        "channel":0,
        "type":"i",
        "value":1
      }
    ]
  }
}

次はボードにデータを送ってみます。このようなJSONテキストを

Screen Shot 2018-10-03 at 13.21.20.png

「Message:」に貼り付けて「Send」。

IMG_3020.jpg

するとボード上のLEDが光ります。ちょっと小さくて感動がうすいので、

IMG_3023.jpg

LEDを並列に増設しました(よい子は抵抗をかませましょう)。これなら大きくてみやすい。「Send」するたびにLEDが光ります、とっても簡単。モバイルバッテリーで外に持ち出してセンサーをつけて値を送ってもいいし、データが到着したらモーターを回してもいいですね。sakura.io便利、IchigoSoda便利!海や山で動く面白ガジェット、思いついちゃった!?


 

Untitled 3.png

いよいよ応募受付がはじまった「PCNこどもプロコン2018」、今年の表彰会場は福岡!応募締め切りは 12/31 、LTE回線を使ったIoTな作品もお待ちしています!

 

 

 

 

 

.

 

Leave a comment